The present invention relates to techniques for testing software.
In order to improve the ease of use, and thus, customer satisfaction, many software products include graphical user interfaces (GUIs). Unfortunately, it is often difficult to test software products that include GUIs. In particular, in order to test a GUI using existing testing software, the objects in the GUI, as well as the associated fields and formats for receiving and outputting data, are typically predefined. This means that responses to an ordered group of operations performed by testing software are typically predictable. For example, the objects, fields, formats and associated testing operations may be specified using test (or procedural) scripts and object maps, which are provided prior to testing.
However, it is difficult to maintain such test scripts and object maps. This is especially true in the development process, during which there is a cyclical interaction between testing and development groups. For each version of the software, any changes to the software need to be tracked, and the test scripts and object maps need to be modified prior to any subsequent testing. The time required for this tracking and modification of the test scripts and object maps often limits the amount of testing that can be performed, which prevents software testers from systematically identifying and correcting errors in their software products. Moreover, this can adversely affect software development costs, product reliability and, ultimately, customer satisfaction.
Similar issues occur when documenting test procedures and test results. In particular, many existing techniques require test operators to maintain a log of the test procedures and test results. Unfortunately, the need to expend time to maintain such documentation often limits the amount of testing that can be performed.